/**
 * 获取URL参数
 * @param {*} name 参数名称
 */
function getQueryString(name) { 
 var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); 
 var r = window.location.search.substr(1).match(reg); 
 if (r != null) return unescape(r[2]); return null; 
}

/*初始化tab*/
function TabInitialization(){
    var tabid = getQueryString("mod");
    if(tabid!=""){
      var tabData=$("a.fng-active[content-key='"+tabid+"']");
      if(tabData.length > 0){
        var title=tabData.attr('title'),contentkey=tabData.attr('content-key');
        if(tabAdd(title,contentkey)){
          changeTab(tabid);
        }
      }
    }
  }



/**
 * 切换tab
 * @param {*} tabid 
 */
function changeTab(tabid){
  element.tabChange("OnlineFarm", tabid);
  updateQueryStringParameter("mod",tabid);
}

/**
 * 静态更新URL
 * @param {*} key 需要更改的参数名
 * @param {*} value 更改的值
 * 参数值不为空时，存在参数则更新，否则不操作
 */
function updateQueryStringParameter(key, value) {
  var uri = window.location.href;

  if(!value) {
    return uri;
  }
  var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
  var separator = uri.indexOf('?') !== -1 ? "&" : "?";
  var state = {
                title: document.title,
                url: document.location.href,
                otherkey: null
              };
            
  if (uri.match(re)) {
    history.replaceState(state, document.title, uri.replace(re, '$1' + key + "=" + value + '$2'));
  }
  else {
    history.replaceState(state, document.title,uri + separator + key + "=" + value);
  }
}

/**
 * 获取页面层弹窗
 * @param {*} title 弹窗标题
 * @param {*} url 异步获取弹窗内容主体路径
 * @param method 可选项，获取方式，默认为get方式,不做选择可为false
 * @param area 可选项，弹窗宽度，默认为600px
 */
function SetPopup(title,url){
  var method = 'get'  //获取方式，初始值为get
      ,area = '600px';  //弹出层大小
  if(arguments.length >= 3){
    if(arguments[2] == 'get' || arguments[2] == 'post'){  //当获取的值非post或非get，则不赋值
      method = arguments[2];
    }
    if(arguments.length == 4 ){
      area = arguments[3];
    }
  }
  //获取弹窗
  layui.use('layer', function(){
    var layer = layui.layer;
    $.ajax({
      type: method
      ,url: url
      ,success:function(result){
        layer.open({
          type: 1
          ,title:title
          ,area: area
          ,content: result
        });
      }
    });
  });
}
/**
 * 
 * @param {*} title 
 * @param {*} contentkey 
 */
function tabAddByData(title,contentkey){
  $.ajax({
    type:"post"
    ,url:"resources/View/"+contentkey+".html"
    ,contentType : "application/x-www-form-urlencoded; charset=utf-8"
    ,success:function(data){
      element.tabAdd('OnlineFarm', {
        title: title 
        ,content: data
        ,id: contentkey
      });
    }
  });
}

   /**
    * 添加选项卡
    * 异步获取选项卡主体内容
    * @param {*} title 
    * @param {*} contentkey
    * @param method 可选项，获取方式，默认为get方式 
    */
    function tabAdd(title,contentkey){
    //获取选项卡
    var method = 'get';
    if(arguments.length >= 3){
      if(arguments[2] == "post" || arguments[2] == "get"){
        method = arguments[2];
      }
    }
    var CheckTab = $(".layui-tab-title li[lay-id='" + contentkey + "']");
    //判断是否已存在该tab
    if(CheckTab.length > 0 ) { 
      changeTab(contentkey);
    }else{
      $.ajax({
        type:method
        ,url:"resources/View/" + contentkey + ".html"
        ,contentType : "application/x-www-form-urlencoded; charset=utf-8"
        ,success:function(data){
          element.tabAdd('OnlineFarm', {   //开始添加选项卡
            title: title 
            ,content: data
            ,id: contentkey
          });
          changeTab(contentkey); //切换到刚添加完的选项卡
          updateQueryStringParameter("mod",contentkey);
        }
      }); 
    } 
  }


/*
获取table数据
*/
function reloadTable(tbfilter,url){
  table.reload(tbfilter, {
    url: url
    ,where:{}
  });
}


/**
 * 表单验证：非空验证、手机验证、邮箱验证、QQ验证、数字验证、中文验证、身份证验证、日期验证、强密码验证、邮政编号验证、IP验证
 * @param {*} name 元素name
 * @param {*} msg 提示字符串
 * @param  method 可选项，验证方法；不选则为非空验证{Phone,Email,QQ,Number,Chinese,Card,StrongPassword,Date,PostalCode,IP}
 */
function CheckForm(name,msg){
  var e = document.querySelector('input[name="' + name + '"]')
      ,method = "CheckNull";
  if(arguments.length >= 3){
    method = arguments[2];
  }
  switch(method){
    case "CheckNull":
      if(e.value == ""){
        alert(msg);
        e.focus();
        return false;
      }
    break;
    case "Phone":
      var reg = /^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/;
      if(reg.test(e.value)){
        alert(msg);
        e.focus();
        return false;
      }
    break;
    case "Email":
        var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
        if(reg.test(e.value)){
          alert(msg);
          e.focus();
          return false;
        }
    break;
    case "QQ":
        var reg = /[1-9][0-9]{4,}/;
        if(reg.test(e.value)){
          alert(msg);
          e.focus();
          return false;
        }
    break;
    case "Number":
        var reg = /^[0-9]*$/;
        if(reg.test(e.value)){
          alert(msg);
          e.focus();
          return false;
        }
    break;
    case "Chinese":
        var reg = /^[\u4e00-\u9fa5]{0,}$/;
        if(reg.test(e.value)){
          alert(msg);
          e.focus();
          return false;
        }
    break;
    case "Card":
        var reg = /^\d{15}|\d{18}$/;
        if(reg.test(e.value)){
          alert(msg);
          e.focus();
          return false;
        }
    break;
    case "StrongPassword":
        var reg = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/;
        if(reg.test(e.value)){
          alert(msg);
          e.focus();
          return false;
        }
    break;
    case "Date":
        var reg = /^\d{4}-\d{1,2}-\d{1,2}/;
        if(reg.test(e.value)){
          alert(msg);
          e.focus();
          return false;
        }
    break;
    case "PostalCode":
        var reg = /[1-9]\d{5}(?!\d)/;
        if(reg.test(e.value)){
          alert(msg);
          e.focus();
          return false;
        }
    break;
    case "IP":
        var reg = /\d+\.\d+\.\d+\.\d+/;
        if(reg.test(e.value)){
          alert(msg);
          e.focus();
          return false;
        }
    break;
  }
  return true;
}